#include <iostream>

#include "ros/ros.h"
#include "std_msgs/String.h"

void topicCallback(const std_msgs::String::ConstPtr &message) { // 主题消息回调函数
    if (message.get() != nullptr) {
        ROS_INFO("Subscribe topic message: %s", message.get()->data.c_str());
    }
}

int main(int argc, char* argv[]) {
    std::string nodeName = "subscriber"; // 节点名称
    ROS_INFO("Subscriber node name is: %s", nodeName.c_str()); // 日志打印节点名称
    ros::init(argc, argv, nodeName); // 初始化ROS1
    ros::NodeHandle nodeHandle; // 节点句柄
    std::string topicName = "demo2"; // 主题名称
    uint32_t queueSize = 1000; // 指定发布者队列的大小
    const ros::Subscriber &subscriber = nodeHandle.subscribe<std_msgs::String>(topicName, queueSize, topicCallback); // 创建主题订阅者
    ros::spin(); // 阻塞线程，防止退出

    return EXIT_SUCCESS;
}
